home *** CD-ROM | disk | FTP | other *** search
/ 9-Digit Zip Code Directory / 9-Digit Zip Code Directory (American Business Information) (ABIZIP-12).ISO / z4src.zip / DVOBJ.H < prev    next >
C/C++ Source or Header  |  1993-11-16  |  16KB  |  481 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * dvobj.h -        Data/View object definitions                                  *
  4. *                                                                             *
  5. *               OLE Version 2.0                                               *
  6. *                                                                             *
  7. *               Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. *
  8. *                                                                             *
  9. \*****************************************************************************/
  10.  
  11. #if !defined( _DVOBJ_H_ )
  12. #define _DVOBJ_H_
  13.  
  14. /****** DV value types ******************************************************/
  15.  
  16. //      forward type declarations
  17. #if defined(__cplusplus)
  18. interface IStorage;
  19. interface IStream;
  20. interface IAdviseSink;
  21. interface IMoniker;
  22. #else 
  23. typedef interface IStorage IStorage;
  24. typedef interface IStream IStream;
  25. typedef interface IAdviseSink IAdviseSink;
  26. typedef interface IMoniker IMoniker;
  27. #endif
  28.  
  29. typedef            IStorage FAR* LPSTORAGE;
  30. typedef             IStream FAR* LPSTREAM;
  31. typedef         IAdviseSink FAR* LPADVISESINK;
  32. typedef             IMoniker FAR* LPMONIKER;
  33.  
  34.  
  35. #if !defined(_MAC)
  36. typedef WORD CLIPFORMAT;
  37. #else
  38. typedef unsigned long CLIPFORMAT;            // ResType
  39. #endif
  40. typedef  CLIPFORMAT FAR* LPCLIPFORMAT;
  41.  
  42.  
  43. // Data/View aspect; specifies the desired aspect of the object when 
  44. // drawing or getting data.
  45. typedef enum tagDVASPECT
  46. {
  47.     DVASPECT_CONTENT = 1,
  48.     DVASPECT_THUMBNAIL = 2,
  49.     DVASPECT_ICON = 4,
  50.     DVASPECT_DOCPRINT = 8
  51. } DVASPECT;
  52.  
  53.  
  54. // Data/View target device; determines the device for drawing or gettting data
  55. typedef struct FARSTRUCT tagDVTARGETDEVICE
  56. {
  57.     DWORD tdSize;
  58.     WORD tdDriverNameOffset;
  59.     WORD tdDeviceNameOffset;
  60.     WORD tdPortNameOffset;
  61.     WORD tdExtDevmodeOffset;
  62.     BYTE tdData[1];
  63. } DVTARGETDEVICE;
  64.  
  65.  
  66. // Format, etc.; completely specifices the kind of data desired, including tymed
  67. typedef struct FARSTRUCT tagFORMATETC
  68. {
  69.     CLIPFORMAT          cfFormat;
  70.     DVTARGETDEVICE FAR* ptd;
  71.     DWORD               dwAspect;
  72.     LONG                lindex;
  73.     DWORD               tymed;
  74. } FORMATETC, FAR* LPFORMATETC;
  75.  
  76.  
  77. // TYpes of storage MEDiums; determines how data is stored or passed around
  78. typedef enum tagTYMED
  79. {
  80.     TYMED_HGLOBAL = 1,
  81.     TYMED_FILE = 2,
  82.     TYMED_ISTREAM = 4,
  83.     TYMED_ISTORAGE = 8,
  84.     TYMED_GDI = 16,
  85.     TYMED_MFPICT = 32,
  86.     TYMED_NULL = 0
  87. } TYMED;
  88.  
  89.  
  90. // DATA format DIRection
  91. typedef enum tagDATADIR
  92. {
  93.     DATADIR_GET = 1,
  94.     DATADIR_SET = 2,
  95. } DATADIR;
  96.  
  97.  
  98. // SToraGe MEDIUM; a block of data on a particular medium 
  99. typedef struct FARSTRUCT tagSTGMEDIUM
  100. {
  101.     DWORD   tymed;
  102.     union
  103.     {
  104.         HANDLE  hGlobal;
  105.         LPSTR   lpszFileName;
  106.         IStream FAR* pstm;
  107.         IStorage FAR* pstg;
  108.     }
  109. #ifdef NONAMELESSUNION
  110.     u       // add a tag when name less unions not supported
  111. #endif
  112.     ;
  113.     IUnknown FAR* pUnkForRelease;
  114. } STGMEDIUM, FAR* LPSTGMEDIUM;
  115.  
  116.  
  117. // Advise Flags
  118. typedef enum tagADVF
  119. {
  120.     ADVF_NODATA = 1,
  121.     ADVF_PRIMEFIRST = 2,
  122.     ADVF_ONLYONCE = 4,
  123.     ADVF_DATAONSTOP = 64,
  124.     ADVFCACHE_NOHANDLER = 8,
  125.     ADVFCACHE_FORCEBUILTIN = 16,
  126.     ADVFCACHE_ONSAVE = 32
  127. } ADVF;
  128.  
  129.  
  130. // Stats for data; used by several enumerations and by at least one 
  131. // implementation of IDataAdviseHolder; if a field is not used, it
  132. // will be NULL.
  133. typedef struct FARSTRUCT tagSTATDATA
  134. {                                   // field used by:
  135.     FORMATETC formatetc;            // EnumAdvise, EnumData (cache), EnumFormats
  136.     DWORD advf;                     // EnumAdvise, EnumData (cache)
  137.     IAdviseSink FAR* pAdvSink;      // EnumAdvise
  138.     DWORD dwConnection;             // EnumAdvise
  139. } STATDATA;
  140.     
  141. typedef  STATDATA FAR* LPSTATDATA;
  142.  
  143.  
  144.  
  145. /****** DV Interfaces ***************************************************/
  146.  
  147.  
  148. #undef  INTERFACE
  149. #define INTERFACE   IEnumFORMATETC
  150.  
  151. DECLARE_INTERFACE_(IEnumFORMATETC, IUnknown)
  152. {
  153.     // *** IUnknown methods ***
  154.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  155.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  156.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  157.  
  158.     // *** IEnumFORMATETC methods ***
  159.     STDMETHOD(Next) (THIS_ ULONG celt, FORMATETC FAR * rgelt, ULONG FAR* pceltFetched) PURE;
  160.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  161.     STDMETHOD(Reset) (THIS) PURE;
  162.     STDMETHOD(Clone) (THIS_ IEnumFORMATETC FAR* FAR* ppenum) PURE;
  163. };
  164. typedef        IEnumFORMATETC FAR* LPENUMFORMATETC;
  165.  
  166.  
  167. #undef  INTERFACE
  168. #define INTERFACE   IEnumSTATDATA
  169.  
  170. DECLARE_INTERFACE_(IEnumSTATDATA, IUnknown)
  171. {
  172.     // *** IUnknown methods ***
  173.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  174.     STDMETHOD_(ULONG, AddRef) (THIS)  PURE;
  175.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  176.  
  177.     // *** IEnumSTATDATA methods ***
  178.     STDMETHOD(Next) (THIS_ ULONG celt, STATDATA FAR * rgelt, ULONG FAR* pceltFetched) PURE;
  179.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  180.     STDMETHOD(Reset) (THIS) PURE;
  181.     STDMETHOD(Clone) (THIS_ IEnumSTATDATA FAR* FAR* ppenum) PURE;
  182. };
  183. typedef        IEnumSTATDATA FAR* LPENUMSTATDATA;
  184.  
  185.  
  186.  
  187. #undef  INTERFACE
  188. #define INTERFACE   IDataObject
  189.  
  190. #define DATA_E_FORMATETC        DV_E_FORMATETC
  191. #define DATA_S_SAMEFORMATETC    (DATA_S_FIRST + 0)
  192.  
  193. DECLARE_INTERFACE_(IDataObject, IUnknown)
  194.     // *** IUnknown methods ***
  195.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  196.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  197.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  198.  
  199.     // *** IDataObject methods ***
  200.     STDMETHOD(GetData) (THIS_ LPFORMATETC pformatetcIn,
  201.                             LPSTGMEDIUM pmedium ) PURE;
  202.     STDMETHOD(GetDataHere) (THIS_ LPFORMATETC pformatetc,
  203.                             LPSTGMEDIUM pmedium ) PURE;
  204.     STDMETHOD(QueryGetData) (THIS_ LPFORMATETC pformatetc ) PURE;
  205.     STDMETHOD(GetCanonicalFormatEtc) (THIS_ LPFORMATETC pformatetc,
  206.                             LPFORMATETC pformatetcOut) PURE;
  207.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  208.                             BOOL fRelease) PURE;
  209.     STDMETHOD(EnumFormatEtc) (THIS_ DWORD dwDirection,
  210.                             LPENUMFORMATETC FAR* ppenumFormatEtc) PURE;
  211.  
  212.     STDMETHOD(DAdvise) (THIS_ FORMATETC FAR* pFormatetc, DWORD advf, 
  213.                     LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE;
  214.     STDMETHOD(DUnadvise) (THIS_ DWORD dwConnection) PURE;
  215.     STDMETHOD(EnumDAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  216. };                 
  217. typedef      IDataObject FAR* LPDATAOBJECT;
  218.  
  219.  
  220.  
  221. #undef  INTERFACE
  222. #define INTERFACE   IViewObject
  223.  
  224. #define VIEW_E_DRAW             (VIEW_E_FIRST)
  225. #define E_DRAW                  VIEW_E_DRAW
  226.  
  227. #define VIEW_S_ALREADY_FROZEN   (VIEW_S_FIRST)
  228.  
  229. DECLARE_INTERFACE_(IViewObject, IUnknown)
  230.     // *** IUnknown methods ***
  231.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  232.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  233.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  234.  
  235.     // *** IViewObject methods ***
  236.     STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex,
  237.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  238.                     HDC hicTargetDev,
  239.                     HDC hdcDraw, 
  240.                     LPCRECTL lprcBounds, 
  241.                     LPCRECTL lprcWBounds,
  242.                     BOOL (CALLBACK * pfnContinue) (DWORD), 
  243.                     DWORD dwContinue) PURE;
  244.  
  245.     STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex,
  246.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  247.                     HDC hicTargetDev,
  248.                     LPLOGPALETTE FAR* ppColorSet) PURE;
  249.  
  250.     STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, 
  251.                     void FAR* pvAspect,
  252.                     DWORD FAR* pdwFreeze) PURE;
  253.     STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE;
  254.     STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf, 
  255.                     LPADVISESINK pAdvSink) PURE;
  256.     STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf, 
  257.                     LPADVISESINK FAR* ppAdvSink) PURE;
  258. };
  259. typedef      IViewObject FAR* LPVIEWOBJECT;
  260.  
  261.  
  262. #undef  INTERFACE
  263. #define INTERFACE   IViewObject2
  264.  
  265. DECLARE_INTERFACE_(IViewObject2, IViewObject)
  266.     // *** IUnknown methods ***
  267.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  268.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  269.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  270.  
  271.     // *** IViewObject methods ***
  272.     STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex,
  273.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  274.                     HDC hicTargetDev,
  275.                     HDC hdcDraw, 
  276.                     LPCRECTL lprcBounds, 
  277.                     LPCRECTL lprcWBounds,
  278.                     BOOL (CALLBACK * pfnContinue) (DWORD), 
  279.                     DWORD dwContinue) PURE;
  280.  
  281.     STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex,
  282.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  283.                     HDC hicTargetDev,
  284.                     LPLOGPALETTE FAR* ppColorSet) PURE;
  285.  
  286.     STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex, 
  287.                     void FAR* pvAspect,
  288.                     DWORD FAR* pdwFreeze) PURE;
  289.     STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE;
  290.     STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf, 
  291.                     LPADVISESINK pAdvSink) PURE;
  292.     STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf, 
  293.                     LPADVISESINK FAR* ppAdvSink) PURE;
  294.                     
  295.     // *** IViewObject2 methods ***
  296.     STDMETHOD(GetExtent) (THIS_ DWORD dwDrawAspect, LONG lindex,
  297.                     DVTARGETDEVICE FAR * ptd, LPSIZEL lpsizel) PURE;
  298.                     
  299. };
  300. typedef      IViewObject2 FAR* LPVIEWOBJECT2;
  301.  
  302.  
  303. #undef  INTERFACE
  304. #define INTERFACE   IAdviseSink
  305.  
  306. DECLARE_INTERFACE_(IAdviseSink, IUnknown)
  307.     // *** IUnknown methods ***
  308.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  309.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  310.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  311.  
  312.     // *** IAdviseSink methods ***
  313.     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc, 
  314.                             STGMEDIUM FAR* pStgmed) PURE;
  315.     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE;
  316.     STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE;
  317.     STDMETHOD_(void,OnSave)(THIS) PURE;
  318.     STDMETHOD_(void,OnClose)(THIS) PURE;
  319. };
  320. typedef      IAdviseSink FAR* LPADVISESINK;
  321.  
  322.  
  323.  
  324. #undef  INTERFACE
  325. #define INTERFACE   IAdviseSink2
  326.  
  327. DECLARE_INTERFACE_(IAdviseSink2, IAdviseSink)
  328.     // *** IUnknown methods ***
  329.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  330.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  331.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  332.  
  333.     // *** IAdviseSink methods ***
  334.     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc, 
  335.                             STGMEDIUM FAR* pStgmed) PURE;
  336.     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE;
  337.     STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE;
  338.     STDMETHOD_(void,OnSave)(THIS) PURE;
  339.     STDMETHOD_(void,OnClose)(THIS) PURE;
  340.  
  341.     // *** IAdviseSink2 methods ***
  342.     STDMETHOD_(void,OnLinkSrcChange)(THIS_ LPMONIKER pmk) PURE;
  343. };
  344. typedef      IAdviseSink2 FAR* LPADVISESINK2;
  345.  
  346.  
  347.  
  348. #undef  INTERFACE
  349. #define INTERFACE   IDataAdviseHolder
  350.  
  351. DECLARE_INTERFACE_(IDataAdviseHolder, IUnknown)
  352.     // *** IUnknown methods ***
  353.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  354.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  355.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  356.  
  357.     // *** IDataAdviseHolder methods ***
  358.     STDMETHOD(Advise)(THIS_ LPDATAOBJECT pDataObject, FORMATETC FAR* pFetc, 
  359.             DWORD advf, LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE;
  360.     STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
  361.     STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  362.  
  363.     STDMETHOD(SendOnDataChange)(THIS_ LPDATAOBJECT pDataObject, DWORD dwReserved, DWORD advf) PURE;
  364. };
  365. typedef      IDataAdviseHolder FAR* LPDATAADVISEHOLDER;
  366.  
  367.  
  368.  
  369. #undef  INTERFACE
  370. #define INTERFACE   IOleCache
  371.  
  372. #define CACHE_E_NOCACHE_UPDATED         (CACHE_E_FIRST)
  373.  
  374. #define CACHE_S_FORMATETC_NOTSUPPORTED  (CACHE_S_FIRST)
  375. #define CACHE_S_SAMECACHE               (CACHE_S_FIRST+1)
  376. #define CACHE_S_SOMECACHES_NOTUPDATED   (CACHE_S_FIRST+2)
  377.  
  378.  
  379. DECLARE_INTERFACE_(IOleCache, IUnknown)
  380. {
  381.     // *** IUnknown methods ***
  382.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  383.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  384.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  385.  
  386.     // *** IOleCache methods ***
  387.     STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE;
  388.     STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE;
  389.     STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE;
  390.     STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE;
  391.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  392.                             BOOL fRelease) PURE;
  393. };
  394. typedef         IOleCache FAR* LPOLECACHE;
  395.  
  396.  
  397.  
  398. // Cache update Flags
  399.  
  400. #define    UPDFCACHE_NODATACACHE            0x00000001
  401. #define UPDFCACHE_ONSAVECACHE            0x00000002
  402. #define    UPDFCACHE_ONSTOPCACHE            0x00000004
  403. #define    UPDFCACHE_NORMALCACHE            0x00000008
  404. #define    UPDFCACHE_IFBLANK                0x00000010
  405. #define UPDFCACHE_ONLYIFBLANK            0x80000000
  406.  
  407. #define UPDFCACHE_IFBLANKORONSAVECACHE    (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE )
  408. #define UPDFCACHE_ALL                    (~UPDFCACHE_ONLYIFBLANK)
  409. #define UPDFCACHE_ALLBUTNODATACACHE        (UPDFCACHE_ALL & ~UPDFCACHE_NODATACACHE)
  410.  
  411.  
  412. // IOleCache2::DiscardCache options
  413. typedef enum tagDISCARDCACHE
  414. {
  415.     DISCARDCACHE_SAVEIFDIRTY =    0,    // Save all dirty cache before discarding
  416.     DISCARDCACHE_NOSAVE         =    1    // Don't save dirty caches before 
  417.                                     // discarding
  418. } DISCARDCACHE;
  419.  
  420.  
  421. #undef  INTERFACE
  422. #define INTERFACE   IOleCache2
  423.  
  424. DECLARE_INTERFACE_(IOleCache2, IOleCache)
  425.     // *** IUnknown methods ***
  426.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  427.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  428.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  429.  
  430.     // *** IOleCache methods ***
  431.     STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE;
  432.     STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE;
  433.     STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE;
  434.     STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE;
  435.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  436.                             BOOL fRelease) PURE;
  437.  
  438.     // *** IOleCache2 methods ***                            
  439.     STDMETHOD(UpdateCache) (THIS_ LPDATAOBJECT pDataObject, DWORD grfUpdf, 
  440.                             LPVOID pReserved) PURE;
  441.     STDMETHOD(DiscardCache) (THIS_ DWORD dwDiscardOptions) PURE;
  442.                         
  443. };
  444. typedef      IOleCache2 FAR* LPOLECACHE2;
  445.  
  446.  
  447. #undef  INTERFACE
  448. #define INTERFACE   IOleCacheControl
  449.  
  450. DECLARE_INTERFACE_(IOleCacheControl, IUnknown)
  451.     // *** IUnknown methods ***
  452.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  453.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  454.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  455.  
  456.     // *** IDataObject methods ***
  457.     STDMETHOD(OnRun) (THIS_ LPDATAOBJECT pDataObject) PURE;
  458.     STDMETHOD(OnStop) (THIS) PURE;
  459. };                 
  460. typedef      IOleCacheControl FAR* LPOLECACHECONTROL;
  461.  
  462.  
  463.  
  464. /****** DV APIs ***********************************************************/
  465.  
  466.  
  467. STDAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
  468.  
  469. STDAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid,
  470.                     REFIID iid, LPVOID FAR* ppv);
  471.                     
  472. #endif // _DVOBJ_H_
  473.